[AWS Systems Manager] SSM経由のsshで再度アクティベーションするとどうなるのか試してみました
1 はじめに
CX事業本部の平内(SIN)です。
AWS Systems Manager(以下、SSM)を利用すると、RaspberryPiにSSMエージェントをインストールし、アクティベーションすることで、遠隔からssh/scpできる環境が構築可能です。
AWS Systems Manager セッションマネージャーでSSH・SCPできるようになりました
AWS Systems ManagerをRaspberry Piで使用してみた
今回は、SSM経由のsshで、再アクティベーションを行うと、どうのような動きをするかを確認してみました。
[2020/08/19] 表現が不適切とのご指摘を頂き、訂正させて頂きました。
結果としては、「再アクティベーション可能」なのですが、これは、あくまで、私が手元で試してみた結果です。正規にドキュメントに紹介されている使用方法ではないので、その点、ご了承ください。
※ 記事中、識別しやすい事を意図として、アクティベーションのコードやIDなどが記載されていますが、既に削除されており、利用することは出来ません。
2 想定場面
想定しているのは、すでにSSMでssh/scpできる1台のRaspberryPiが遠隔地にある時、そのRaspberryPiのSDカードを複製して、台数を増やす場面です。
単純にコピーしたイメージを起動すると、同じインスタンスとなってしまうはずなので、複製したRaspberryPiにsshで接続し、アクティベーションを実行すると、別のインスタンスとして管理できるようになるのでは?という意図です。
3 既存の接続
下記は、既存の接続です。インスタンスID mi-0a0a552936c4b8abfとして一覧されていることが確認できます。
手元からインスタンスIDでsshが可能であり、/var/lib/amazon/ssm/registrationを確認すると、現在のIDも確認できます。
% ssh pi@mi-0a0a552936c4b8abf Linux raspberrypi 5.4.51-v7+ #1327 SMP Thu Jul 23 10:58:46 BST 2020 armv7l pi@raspberrypi:~ $ sudo cat /var/lib/amazon/ssm/registration {"ManagedInstanceID":"mi-0a0a552936c4b8abf","Region":"ap-northeast-1"}
4 アクティベーションの作成
複製したRaspberryPiのためのアクティベーションを作成します。(既に使用可能なものがあれば、そのまま利用可能です)
SSMのコンソールで、ハイブリッドアクティベーション > アクティベーションの作成から、適当な名前で作成します。
作成時に表示される、CodeとIDをコピーします。
5 アクティベーション
既に、RaspberryPIには、amazon-ssm-agentがインストールされているはずです。
参考:Step 5: Install SSM エージェント for a hybrid environment (Linux)
mkdir /tmp/ssm sudo curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_arm/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb sudo service amazon-ssm-agent stop sudo amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" sudo service amazon-ssm-agent start
よって、sshで接続し、サービスが起動したまま、取得したIDとCodeでアクティベーションを行います。(上書きの確認には、Yesを入れます。)
出力から、新しく登録されたインスタンスIDは、mi-0a3579457b06355efとなっていることが確認できます。
pi@raspberrypi:~ $ sudo amazon-ssm-agent -register -code "k0jbTD0UUb0FrQsm3IOj" -id "300b65f2-a3fc-49cd-a70a-2afcc8da738d" -region "ap-northeast-1" Initializing new seelog logger Error parsing logger config. Creating logger from default config: xml has no content New Seelog Logger Creation Complete Instance already registered. Would you like to override existing with new registration information? [Yes/No]: Yes 2020-08-19 10:02:54 INFO Successfully registered the instance with AWS SSM using Managed instance-id: mi-0a3579457b06355ef
この時、コンソールを確認すると、新しくmi-0a3579457b06355efが増えて、オフラインとなっています。
なお、作業中のsshは継続して利用可能ですが、既存のmi-0a0a552936c4b8abfへの新たな接続はできませんでした。 (作業が完了するまで、切断しないように注意が必要そうです)
6 エージェント再起動
継続中のssh接続で、エージェントの再起動を行います。
pi@raspberrypi:~ $ sudo service amazon-ssm-agent restart pi@raspberrypi:~ $ service amazon-ssm-agent status ● amazon-ssm-agent.service - amazon-ssm-agent Loaded: loaded (/lib/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-08-19 10:20:53 JST; 13s ago
再起動すると、コンソール上でオンラインとなっていることが確認できます。
そして、新しいインスタンスIDへのsshも可能になります。(既存の接続は、残っていますが、切断した時点で終わりです)
7 最後に
結果としては、想定以上に安定して利用可能でした。 この動作をうまく組み合わせれば、現地では、イメージを複製するだけでRaspberryPIの増加作業がうまく行えそうな気がしています。